package com.autumn.platform.core.context.track;

import com.autumn.platform.core.Defaults;

public class Tracker {

    /**
     * 开启跟踪
     */
    public static void start() {
        getTracker().start();
    }

    /**
     * 使用指定跟踪号开始跟踪
     * 
     * @param trackId 跟踪号
     */
    public static void start(String trackId) {
        getTracker().start(trackId);
    }

    /**
     * 判断是否正在跟踪
     * 
     * @return 是否正在跟踪
     */
    public static boolean isTracking() {
        return getTracker().isTracking();
    }

    /**
     * 获取目前的跟踪号
     * 
     * @return 当前跟踪号
     */
    public static String getCurrentTrackId() {
        return getTracker().getCurrentTrackId();
    }

    /**
     * 附加当前trackId
     * 
     * @param src
     * @return
     */
    public static String appendTrackId(String src) {
        if (!isTracking()) {
            start();
        }
        return getTracker().appendTrackId(src);
    }

    /**
     * 停止跟踪
     */
    public static void stop() {
        getTracker().stop();
    }

    /**
     * 获取跟踪器
     * 
     * @return 跟踪器
     */
    private static ITracker getTracker() {
        return Defaults.getDefaultComponent(ITracker.class);
    }
}
